import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class PlataformaEstatica here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class PlataformaEstatica extends Actor
{
    /**
     * Act - do whatever the PlataformaEstatica wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    protected int ancho;
    protected GreenfootImage barra;
    protected Heroe jug;
    protected Enemigo ene;
    
    /**
     * Metodo Act de la clase, Se obtiene la imagen de la plataforma
     * Se activa el metodo de movimiento, el metodo para subir al heroe y al enemigo
     * Y el metodo para eliminar la plataforma
     */
    public void act() 
    {
        barra = getImage();
        ancho=barra.getWidth();
        movimientoNormal();
        subeJugador(20);
        subeEnemigo(20);
        eliminaPlataforma();
    }
    
    /**
     * Metodo que simula el movimiento de la plataforma en estado descendente
     */
    public void movimientoNormal()
    {
        setLocation(getX(), getY() +1);
    }
    
    /**
     * Metodo para eliminar la plataforma una vez que llega a abajo
     */
    public void eliminaPlataforma()
    {
         if(getY() == 799) { getWorld().removeObject(this); }
    }
    
    /**
     * Funcion para subir al jugador a la plataforma
     */
    public int subeJugador(int num)
    {
       int res=0;
       Actor j = getOneIntersectingObject(Heroe.class);//Verifica si hay interseccion con el objeto heroe
       if(j != null) 
       {
        jug = (Heroe)j;
        if(jug.getY()+(jug.alto/2)-num < getY())//Si lo hay Sube al jugador a la plataforma
        {
           int x=jug.getX();
           getWorld().removeObject(jug);
           getWorld().addObject(jug,x,getY()-(jug.alto/2)-num);
           res=jug.enc=1;
        }
       }
        return res;
    }
    
    /**
     * Metodo para subir al enemigo a la plataforma
     */
    public int subeEnemigo(int num)
    {
       int res=0;
       Actor j = getOneIntersectingObject(Enemigo.class);
       if(j != null)
       {
        ene = (Enemigo)j;
        if(ene.getY()+(ene.alto/2)-num < getY()&&ene.tipo()==0)
        {
           int x=ene.getX();
           getWorld().removeObject(ene);
           getWorld().addObject(ene,x,getY()-(ene.alto/2)-num);
           res=ene.enc=1;
        }
       }
        return res;
    }
}
